home *** CD-ROM | disk | FTP | other *** search
-
-
- ===================================================================
-
- Update History
-
- ===================================================================
-
- Version 1.2d (May 10 1997)
-
- o Fixed a bug in intuition.i. EasyRequestArgs had wrong
- returnvalue, WindowPtr, should be Integer.
- o Added stuff to Exec/Types.i:
- Type
- BOOL = Short;
- Const
- BOOLTRUE = -1;
- BOOLFALSE = 0;
- Just to make it easier to use c-functions.
- o This one is old but while I remember it.
- Utility/utility.i had wrong names for some of the functions.
- Stricmp, Strnicmp, ToLower and ToUpper. Changed to
- UStricmp, UStrnicmp, UToLower and UToUpper.
- o When I tried to set a title in an aslfontrequester the
- layout got screwed up. Made a new asl.lib and it worked
- ok. Just link with the asl.lib before pcq.lib.
-
- Version 1.2d (May 01 1997)
-
- PCQ Pascal 1.2d is now freeware.
-
- I got a mail from Pat Quaid today that I could put PCQ 1.2d
- on Aminet as Freeware.
-
- So the people that has collected the sharewarefee can keep
- the money. (That's what Pat sad.)
-
- This version has the includes for 3.1 and pcq.lib for 3.1.
- The includes are the work of Andreas Tetzl and pcq.lib is
- the work of Bernd Kunnen.
-
- Myself (Nils Sjoholm) has made some correction to the
- includes and made some glue routines for missing functions.
- The glues are joined to pcq.lib.
-
- I have corrected the includes for some time and I haven't
- keeped record of my changes so I don't remeber what the
- changes are.:)
-
- ***************************************************************
-
- Version 1.2d (August 22, 1992)
-
- o Fixed a problem with typed constant arrays - array elements
- with an odd size were not padded.
-
- Version 1.2d (February 15, 1992)
-
- o Fixed the date routines in DateTools
- o Fixed a bug with range types that caused them to be one
- byte long.
- o Comparisons of structured types didn't work - they do now.
- o Fixed a problem with the iff.library's GetColorTable glue
- routine.
-
- Version 1.2d (September 18, 1991)
-
- o Fixed a bug in multi-dimensional array references.
- o Fixed a mistake in the Exec/ExecBase.i file.
- o Added support for variable numbers of arguments, including
- the va_start and va_arg routines.
- o Added support for C style parameter passing, i.e. right-to-
- left.
- o Added the $X directive for ignoring function return values.
-
- Version 1.2c (August 10, 1991)
-
- o The compiler would not allow New() and Dispose() in programs
- compiled under the small initialization code option.
- o Since type casts were not functions, constant integers were
- never extended if they were cast to, say, a pointer type.
- That's not really a bug, but since it is difficult to get
- around, the compiler now promotes integer types when it
- should.
- o The CHIP and FAST keywords were added.
- o Added variant records.
- o Added the exception that allows pointer declarations to refer
- to undefined types.
- o Added support for the "e" scaling term in floating point
- constants, so for example "2e2" means 2 * 10^2.
- o Added the $N directive.
- o Added (* and *) as synonyms for { and }
- o Added execution profiler.
- o Some of the floating point output routines fixed in previous
- versions had not yet been incorporated into PCQ.lib.
- o Modified the IF statement to omit code inside constant FALSE
- IF statements.
- o Fixed a bug in the ReadInt routine when no digits were read.
-
- Version 1.2b (June 22, 1991)
-
- o The compiler would ignore function or procedure parameters
- following negative constants.
- o The compiler now ensures that each element of an array is
- word-aligned, if the element is larger than one byte.
- o Fixed the looping problem with REPEAT/UNTIL.
- o The $A didn't work between the routine header and the code
- area.
-
- Version 1.2a (June 8, 1991)
-
- o The XOR operator would produce illegal assembly commands.
- o Some floating point comparisons would produce incorrect
- results.
- o The $A assembly directive now works anywhere in the code,
- not just in procedures and functions.
- o The compiler used to accept unknown identifiers in typed
- constants (as operands of the @ operator).
- o The INC and DEC statements were not handling Inc(var1,var2)
- forms correctly.
-
- Version 1.2 (April 18, 1991)
-
- o Fixed strlen and CreateTask() to work with 32-bit memory.
- o Re-wrote the expression parsing and code generating routines
- completely. The routines now use registers much more
- effectively, and provide a good base for the separate
- peephole optimizer.
- o Added a few Turbo Pascal features: you can now use typecasts
- anywhere, even in address calculations. Thus you can now
- write something like RecordType(Pointer^).Field, which in
- version 1.1 was illegal.
- o Changed the FOR statement significantly in order to make it
- more efficient, and more like Turbo. It boils down to two
- differences: FOR loops no longer run a minimum of once (e.g
- for i := 1 to 0 do ... will execute zero times), and the BY
- clause is gone.
- o Added short circuit evaluations, automatic floating point
- conversions, Heap functions, Reset and Rewrite.
- o You can now use any standard functions or operators in
- constant expressions.
- o Changed the Read routines to comply with Standard Pascal and
- Turbo, in that any white space is skipped before reading
- integers and reals. It used to stop at EOLNs.
-
-
- Version 1.1d, May 6, 1990:
-
- I've begun accumulating small changes under a new version
- number purely for aesthetics. The first difference is that the
- compiler now creates a SECTION for data only if it has to. That
- sounds like an efficiency issue, but actually it wasn't creating a
- SECTION at all if it was compiling an External unit.
- When StdOut is a file, the compiler no longer writes the line
- numbers and all that stuff. I have also made what I hope is the
- last fix to the real number reading routines.
- The routine that compares include file names to the list of
- previously included files is now case-insensitive. I can't
- imagine why it wasn't before.
-
- Version 1.1c, April 6, 1990:
-
- I should have guessed that the problem recognizing the sign of
- small real numbers on output would have a symmetric problem for
- input. It did, and now it doesn't. I also fixed the problem with
- signs on real constants. I also added the exp() and ln()
- functions recently sent to me by Martin Combs. To avoid inflation
- of version numbers, I've changed the date but kept the same
- version.
- I've been thinking about adding peephole optimization to the
- process, and rather than doing it the right way I've been playing
- with a separate program. To make that easier, I've removed short
- branches from the code generated. A68k adds them where necessary
- anyway.
-
- Version 1.1c, March 3, 1990:
-
- The only changes to the compiler are the new standard
- functions. The more significant changes were in the runtime
- library. First, I replaced the sin() and cos() functions based on
- suggestions by Martin Combs - the result is that the results are
- accurate to about 3 digits, and only slightly slower. Martin was
- kind enough to send along a very useful set of routines, which
- also included the tan() and arctan() functions. I also fixed the
- routine that writes real numbers, so values between -1.0 and 0.0
- now include the minus sign.
-
- Version 1.1b, February 6, 1990:
-
- This program is over a year old.
- Added the Sqr() function. Sqr(n) is the same as n * n, but
- marginally faster and smaller. Also, the compiler used to
- generate lots of errors when an include file was missing. Now it
- skips the rest of the comment, like it should.
- Apparently floating point constants didn't used to work. Why
- am I always the last to know? I also added the Sin() and Cos()
- functions, based on an aside during a lecture on an entirely
- different topic.
- Later I added the sqrt() function, using Newton's method.
-
- Version 1.1a, January 20, 1990:
-
- Fixed a bug in the WriteArb routine that manifested itself
- whenever you wrote to a 'File of Something'.
- Fixed a bug left in the floating point math library. It seems
- that it had not been updated for the all the 1.1 changes, so
- during linking it required objects that aren't around anymore.
- Since floating point math is now handled by the compiler, I hadn't
- noticed it before.
-
- Version 1.1, December 1, 1989:
-
- This version is completely re-written, and has far too many
- changes to list them individually here. The main changes are the
- with statement, the new IO system, a completely redesigned symbol
- table, nested procedures, and several new arithmetic operators.
- In order to help port programs from Turbo Pascal and C, I added
- typed constants, the Goto statement, and the normal syntax for
- multi- dimensional arrays.
-
- Version 1.0c, May 21, 1989:
-
- I changed the input routines around a bit, using DOS files
- rather than PCQ files. I buffered the input, and made the
- structure more flexible so I could nest includes. Rather than
- make up some IfNDef directive, I decided to keep track of the file
- names included and skip the ones already done. Buffering the
- input cut compile times in half. I would not have guessed
- buffering would be that significant, and I suppose I should
- rethink PCQ input/output in light of this.
- I added code to check for the CTRL-C, so you can break out
- early but cleanly. The Ports.i include file had a couple of
- errors, which I fixed, and I also fixed the routine that opens a
- console for programs that need one. It used to have problems when
- there were several arguments in the first write().
- I added the SizeOf() function, floating point math, and the
- standard functions related to floating point math.
- There were several minor problems in the include files which I
- found when I got the 1.3 includes, the first official set I've had
- since 1.0.
- I relaxed the AND, OR and NOT syntax to allow any ordinal
- type. This allows you to get bitwise operations on integers and
- whatever. I also added a standard function called Bit(),
- described above. These are all temporary until I can get sets
- into the language.
- I finally added string indexing. In doing so I found a bug in
- the addressing routine selector(), so I rewrote it to be more
- sensible. I think it also produces larger code, but I'm not too
- worried because I'm going to add expression trees soon anyway.
-
- Version 1.0b, April 17, 1989:
-
- I fixed a bug in the way complex structures were compared. It
- seems that one too many bytes were considered, so quite often the
- comparison would fail.
-
- Version 1.0a, April 8, 1989:
-
- This version added 32 bit math, and fixed the case statement.
- The math part was just a matter of getting the proper assembly
- source, but I changed the case statement completely. Version 1.0
- of the compiler produced a table that was searched sequentially
- for the appropriate value, which if found was matched up with an
- address. I thought all compilers did this, but when debugging a
- Turbo Pascal program at work I found that it just did a bunch of
- comparisons before each statement, as if it were doing a series of
- optimized if statements. I had thought of this and rejected it as
- being too simplistic, but if it's good enough for Turbo it's good
- enough for me.
- The next thing I changed in this release was the startup code.
- You can now run PCQ Pascal programs from the Workbench. This was
- just a matter of taking care of the Workbench message, but I also
- fooled around with standard input and output. If you try to read
- or write to standard in or out from a program launched from the
- Workbench, the run time code will open a window for you.
- I also fixed one bug that I found: an array index that was
- not a numeric type had its type confused. Nevermore.
-
- Version 1.0, February 1, 1989
-
- Original release.
-
-
-
-